/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.losalpes.carritoCompra;

import com.losalpes.businessEntities.Articulo;
import com.losalpes.persistence.entity.Compra;
import com.losalpes.persistence.entity.FormaPago;
import java.util.ArrayList;
import javax.ejb.Local;

/**
 *
 * @author integradores
 */
@Local
public interface ICarritoCompraService {
    /**
     * Agrega un nuevo articulo al carrito de compras
     * @param articulo articulo a agregar
     */
    void add(Articulo articulo);

    /**
     * Elimina un articulo del carrito de compras
     * @param articulo articulo a eliminar
     */
    void remove(Articulo articulo);

    /**
     * Actualiza un articulo del carrito de compras
     * @param articulo articulo a actualizar
     */
    void update(Articulo articulo);

    /**
     * Metodo usado para realizar la compra
     * @param tarjetaCredito Informacion de pago del cliente
     */
    void Comprar(FormaPago formaPago);

    /**
     * Metodo usado para retornar todos los articulos
     * que corresponden a la compra hecha por el cliente
     * @return Lista de articulos comprados por el cliente
     */
    ArrayList<Articulo> findAllArticulos();

    /**
     * Retorna el resumen de la compra
     * realizada por el cliente
     * @return Compra realizada por el cliente
     */
    Compra findCompra();

    /**
     * Metodo que retorna todos los articulos
     * comprados cuyo tipo es interior
     * @return Listado de articulos de tipo
     * interior comprados
     */
    ArrayList<Articulo> findArticuloByTipoInterior();

    /**
     * Metodo que retorna todos los articulos
     * comprados cuyo tipo es exterior
     * @return Listado de articulos de tipo
     * exterior comprados
     */
    ArrayList<Articulo> findArticuloByTipoExterior();

    /**
     * Metodo usado para limpiar el carrito cuando
     * se presenta una cancelacion de la compra
     */
    void limpiar();
}

